{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# spacy中文命名实体识别\n",
    "\n",
    "### 安装spacy的中文命名实体识别模型\n",
    "```bash\n",
    "python -m spacy  download zh_core_web_sm    # 科学上网\n",
    "```\n",
    "\n",
    "### 代码实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "朱文公 PERSON\n",
      "七八年 DATE\n",
      "石井栏 GPE\n",
      "黄蜂伏 PERSON\n",
      "乌根是 GPE\n",
      "珊瑚珠 PERSON\n",
      "晚间 TIME\n",
      "夜间 TIME\n",
      "半夜 TIME\n",
      "一 CARDINAL\n",
      "百草园 PERCENT\n",
      "赤练蛇 PERSON\n",
      "冬天 DATE\n",
      "百草园 PERCENT\n",
      "罗汉 PERSON\n",
      "一两天 DATE\n",
      "一 CARDINAL\n",
      "张飞鸟 PERSON\n",
      "半 CARDINAL\n",
      "三四只 CARDINAL\n",
      "小半天 ORG\n",
      "几十 CARDINAL\n",
      "石井栏 GPE\n",
      "木莲们 NORP\n",
      "第三 ORDINAL\n",
      "三 CARDINAL\n",
      "扁 PERSON\n",
      "孔子 PERSON\n",
      "第一 ORDINAL\n",
      "孔子 PERSON\n",
      "第二 ORDINAL\n",
      "第二 ORDINAL\n",
      "正午 TIME\n",
      "晚上 TIME\n",
      "这几天 DATE\n",
      "三言 CARDINAL\n",
      "五 CARDINAL\n",
      "七 CARDINAL\n",
      "静悄悄 GPE\n",
      "一 CARDINAL\n",
      "铁如意 ORG\n",
      "金叵罗 PERSON\n",
      "千 CARDINAL\n",
      "荡寇志 WORK_OF_ART\n",
      "西游记 ORG\n",
      "九月十八日 DATE\n"
     ]
    }
   ],
   "source": [
    "import spacy\n",
    "\n",
    "model = spacy.load(\"zh_core_web_sm\")\n",
    "with open('从百草园到三味书屋.txt', encoding='utf8') as f: # encoding 要使用和这个文件对应的编码\n",
    "    text  = f.read()                                    # 读取全部字符\n",
    "\n",
    "doc  = model(text)\n",
    "\n",
    "for entity in doc.ents:\n",
    "    print(entity.text, entity.label_)                   # 输出原始文本和对应的命名实体标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "动词: [有, 相传, 叫, 作百, 是, 卖给, 末次, 隔, 确凿, 是, 说, 光滑, 高大, 紫红, 说, 长吟, 肥胖, 轻捷, 叫, 直窜, 去, 是, 泥墙, 根, 有, 低唱, 在, 弹琴, 翻, 开断, 会, 遇见, 按住, 会, 拍, 缠络, 有, 有, 拥肿, 有人, 说, 有, 象, 吃, 可以, 成仙, 拔, 起来, 牵连, 地拔, 起来, 弄, 坏, 见, 有, 怕刺, 可以, 摘到, 攒成, 酸, 甜, 要好, 远, 长, 是, 去, 相传, 有, 大, 讲, 给, 听, 有, 住, 用功, 听到, 有人, 叫, 答应, 看, 见, 美女, 笑, 隐去, 高兴, 走来夜谈, 破, 说, 遇见, 这是, 能, 唤人, 倘, 答应, 要, 来, 吃, 吓, 要死, 无妨, 给, 说, 放, 可, 高枕而卧, 办, 睡, 着, 睡, 着, 来, 是, 风雨声, 抖作, 一团, 听, 豁, 飞出, 没有, 飞, 回来, 在, 说, 这是, 能, 吸蛇, 美女, 治死, 结末, 是, 叫, 答应, 使, 觉得, 做人, 乘凉, 担心, 敢, 去, 看, 想, 得到, 走到, 想, 得到, 遇见, 美女, 叫, 是, 有的, 美女, 无味, 两样, 拍雪人, 需要, 这是, 荒园, 人迹罕至, 相宜, 来, 捕鸟, 薄薄, 是, 不行, 盖, 觅食, 好, 露出, 用, 大, 撒些, 秕谷, 棒, 上, 牵着, 看, 下来, 啄食, 走到, 一拉, 罩住, 所得, 是, 居多, 有, 白颊, 躁, 养, 过夜, 这是, 传授, 能, 用, 见, 进去, 拉, 跑去, 看, 费, 捉住, 是, 能, 捕获, 装, 叫, 撞, 问, 得失, 静静, 笑, 道, 性急, 等, 走到, 去, 知道, 要, 送进, 去, 为, 严厉, 是, 乌毁, 是, 去, 是, 站, 跳, 下来, 知道, 能, 常到, 出门, 走过, 是, 进去, 是, 挂, 是, 画, 肥大, 牌位, 算是, 拜, 算是, 拜, 答礼, 是, 花白, 戴, 恭敬, 听到, 是, 方正, 质朴, 博学, 不知, 听来, 渊博, 认识, 怪, 冤气所化, 浇, 消释, 想, 详细, 知道, 是, 知道, 渊博, 得到, 可以, 问, 是, 上, 退, 下来, 问, 知道, 高兴, 还有, 知道, 做, 是, 应该, 问, 读书, 是, 渊博, 知道, 知道, 愿意, 说, 大, 如此, 遇见, 读书, 习字, 对课, 严厉, 好, 起来, 读, 加多, 加上, 到, 有, 小, 可以, 爬上, 去, 折腊, 是, 捉, 没有, 同窗们, 到, 久, 不行, 叫, 起来, 到, 去, 走, 回去, 回去, 不行, 有, 常用, 有, 常用, 瞪, 读书, 放开, 读, 人声鼎沸, 有, 念, 仁远乎哉, 欲, 至, 有, 念, 笑人, 齿缺, 曰, 有, 念, 有, 念, 下上, 苞茅, 念书, 低, 下去, 静下, 去, 读, 指挥, ～～, 醉, ～～, 疑心, 读到, 微笑, 起来, 仰起, 过去, 拗, 过去, 读书, 入神, 是, 相宜, 有, 套, 做戏, 是, 叫作, 蒙, 下来, 习字时候, 一样, 读, 起来, 画, 多, 起来, 读成, 画, 成, 是, 有, 要, 用, 卖给, 是, 开锡, 听说, 做, 升到, 绅士, 没有]\n"
     ]
    }
   ],
   "source": [
    "print(\"动词:\", [token for token in doc if token.pos_ == \"VERB\"])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
